package com.jiangyao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jiangyao.model.dto.backend.AdminUserDTO;
import com.jiangyao.model.dto.backend.AdminUserListPageDTO;
import com.jiangyao.model.dto.backend.AdminUserSearchDTO;
import com.jiangyao.model.entity.AdminUser;
import com.jiangyao.model.vo.AdminUserSessionVO;

import java.util.List;

/**
 * <p>
 * 管理员信息 服务类
 * </p>
 *
 * @author yangyongchuan
 * @since 2020-08-12
 */
public interface AdminUserService extends IService<AdminUser> {

	/**
	 * 登录
	 *
	 * @param adminUserDTO 登录DTO
	 * @return 结果
	 */
	AdminUserSessionVO login(AdminUserDTO adminUserDTO);

	/**
	 * 获取后台管理员列表
	 *
	 * @param adminUserListDTO 请求参数
	 * @return 结果
	 */
	Page<AdminUser> getListPage(AdminUserListPageDTO adminUserListDTO);

	/**
	 * 增加管理员账号
	 *
	 * @param adminUserDTO 请求参数
	 */
	void add(AdminUserDTO adminUserDTO);

	/**
	 * 编辑管理员账号
	 *
	 * @param adminUserDTO 请求参数
	 */
	void edit(AdminUserDTO adminUserDTO);

	/**
	 * 编辑自己管理员账号
	 *
	 * @param adminUserDTO 请求参数
	 */
	void editMyself(AdminUserDTO adminUserDTO);

	/**
	 * 修改(重置)密码
	 *
	 * @param adminUserDTO 请求参数
	 */
	void editPassword(AdminUserDTO adminUserDTO);

	/**
	 * 保存用户与角色
	 *
	 * @param adminId    账号ID
	 * @param roleIdList 角色ID集合
	 */
	void saveAdminRole(Integer adminId, List<Integer> roleIdList);

	/**
	 * 通过账号获取管理账号
	 *
	 * @param loginName 账号
	 * @return 管理账号
	 */
	AdminUser getByLoginName(String loginName);

	/**
	 * 根据姓名检索账号（最多返回50）
	 *
	 * @param adminUserSearchDTO 检索账号DTO
	 * @return 结果
	 */
	List<AdminUser> searchForSelect(AdminUserSearchDTO adminUserSearchDTO);

	/**
	 * 获取封装登录用户组织 班级集合
	 *
	 * @param adminUserSessionVO 登录用户信息
	 * @return 登录信息
	 */
	AdminUserSessionVO packageOrgAndClass(AdminUserSessionVO adminUserSessionVO);
}
